//	Template.h
//		C header file for VCSetAlertAppDll and VCSetAlertAppDllEx callbacks.
//		To be used as a template for user-defined callbacks.
//
//	These callbacks are user-defined and exported from the user's DLL.
//	Each code set in VCSetAlertAppDll(Ex) results in calls to one of these callbacks.
//	Refer to each callback declaration below for details about parameters and
//	when it is called.
//
//	Syntax for VCSetAlertAppDll:
//		VCSetAlertAppDll(&iError, "YourAlert.dll", "YourAlertName", 
//					iCode0);
//	Syntax for VCSetAlertAppDllEx:
//		VCSetAlertAppDll(&iError, "YourAlert.dll", "YourAlertName", 
//					iCode0, iCode1);
//
//	"YourAlert.dll" is name of the DLL containing the callbacks,
//		substitute the name of your custom DLL.
//	"YourAlertName" is the name which prefixes the function names in the
//		callbacks, substitute your custom name both in
//		VCSetAlertAppDll(Ex) and in the declarations below.
//	iCode0, iCode1 are the codes for the alerts which you desire.
//		Refer to VCType32.h or the API Help file for their values.
//		Codes which begin ALERT_APP_... are used in the iCode0 parameter of 
//		either VCSetAlertAppDll or VCSetAlertAppDllEx.
//		Codes which begin ALERT_APP_EX_... are used in the iCode1
//		parameter of  VCSetAlertAppDllEx.
//	Refer to the API Help file for further information.
//
//	Parameters, in general:
//		All of the callbacks are defined with a parameter list.  Many of the
//		callbacks do not pass actual parameters, so the parameter list is
//		merely a place holder.
//		It is important to retain these placeholders, because VCADD expects
//		this syntax.
//		Where parameters are actually passed, the declaration uses a 
//		parameter name and gives a description of the parameter.
//
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool initiating - ALERT_APP_UTOOL_INIT
//	parameter: LOWORD(lCmdID) is Tool ID
//	note: called when a user-tool, started by VCSetUserTool, is starting.
void WINAPI YourAlertName_Init(WPARAM, LPARAM lCmdID) 
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool terminating - ALERT_APP_UTOOL_TERMINATE
//	note: called when a user-tool, started by VCSetUserTool, is terminating.
void WINAPI YourAlertName_Terminate(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool aborting - ALERT_APP_UTOOL_ABORT
//	note: called when a user-tool, started by VCSetUserTool, is aborting.
void WINAPI YourAlertName_Abort(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool mousedown - ALERT_APP_UTOOL_MOUSEDOWN
//	note: called when a user-tool, started by VCSetUserTool, receives
//		mouse-click input from the user.
//		Points entered by the user from the keyboard are translated into
//		the equivalent mouse-click and sent as a mouse-down.
//		Refer to API Help file for VCGetUserToolLBDown for mousedown
//		location. 
void WINAPI YourAlertName_MouseDown(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool mousemove - ALERT_APP_UTOOL_MOUSEMOVE
//	note: called when a user-tool, started by VCSetUserTool, receives
//		mousemove input from the user.
//		Refer to API Help file for VCGetUserToolMouseMove for mousemove
//		location. 
void WINAPI YourAlertName_MouseMove(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool mouseup - ALERT_APP_UTOOL_MOUSEUP
//	note: called when a user-tool, started by VCSetUserTool, receives
//		mouseup input from the user.
//		Refer to API Help file for VCGetUserToolLBUp for mouseup
//		location. 
void WINAPI YourAlertName_MouseUp(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool penup - ALERT_APP_UTOOL_PENUP
//	note: called when a user-tool, started by VCSetUserTool, receives
//		PenUp from the user.
void WINAPI YourAlertName_PenUp(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	user-tool erase rubberband - ALERT_APP_UTOOL_ERASERUBBER
//	note: called when a user-tool, started by VCSetUserTool, needs to erase
//		any possible rubberband from the screen, due to VCADD needing
//		to change or redraw the drawing view.
void WINAPI YourAlertName_EraseRubber(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	tool start - ALERT_APP_TOOL_START
//	parameters: LOWORD(lParam) is Tool ID, HIWORD(lParam) is Tool Type
//		Tool Type: 0, tool will abort other running tools
//			1, tool is nestable in other running tools 
//			2, tool is nestable and generates tool start and complete messages
//	note: called when a tool is starting.
//		When the user completes a tool normally, the typical sequence is:
//			1. Tool_Complete on tool completing.
//			2. Tool_Start on the default tool as it restarts.
//		When the user aborts a tool with Escape key, the typical sequence is:
//			1. Tool_Abort on tool aborting.
//			2. Tool_Complete on tool aborting.
//			3. Tool_Start on the default tool as it restarts.
//		When the user aborts a tool by starting another tool, the typical
//			sequence is:
//			1. Tool_Start on the tool the user started.
//			2. Tool_Abort on tool aborting.
//			3. Tool_Complete on tool aborting.
void WINAPI YourAlertName_ToolStart(WPARAM, LPARAM lParam) 
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	tool complete - ALERT_APP_TOOL_COMPLETE
//	parameters: LOWORD(lParam) is Tool ID, HIWORD(lParam) is Tool Type
//		Tool Type: 0, tool will abort other running tools
//			1, tool is nestable in other running tools 
//			2, tool is nestable and generates tool start and complete messages
//	note: called when a tool is completing.
//		See ToolStart for discussion of when this alert is generated.
void WINAPI YourAlertName_ToolComplete(WPARAM, LPARAM lParam) 
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	tool abort - ALERT_APP_TOOL_ABORT
//	parameters: LOWORD(lParam) is Tool ID, HIWORD(lParam) is Tool Type
//		Tool Type: 0, tool will abort other running tools
//			1, tool is nestable in other running tools 
//			2, tool is nestable and generates tool start and complete messages
//	note: called when a tool is aborting.
//		See ToolStart for discussion of when this alert is generated.
void WINAPI YourAlertName_ToolAbort(WPARAM, LPARAM lParam)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	world mousedown - ALERT_APP_WORLD_MOUSEDOWN
//	note: called when the user mouse-clicks in the drawing.
//		This callback will receive all mousedowns, compared to the callback
//		for user-tools which receives only mousedowns for that user-tool.
//		Refer to API Help file for VCGetLastPoint for mousedown location. 
void WINAPI YourAlertName_WorldMouseDown(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	world mouseup - ALERT_APP_WORLD_MOUSEUP
//	note: called when the user mouseups in the drawing.
void WINAPI YourAlertName_WorldMouseUp(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	world mousemove - ALERT_APP_WORLD_MOUSEMOVE
//	note: called when the user mousemoves in the drawing.
//		Refer to API Help file for VCGetCurrentPoint for mousemove location. 
void WINAPI YourAlertName_WorldMouseMove(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	command line character - ALERT_APP_CMDLINE_CHAR 
//	parameter: LOWORD(wChar) is character code
//	note: called when the user enters command line input from the keyboard.
//		Command line input may also be captured through
//		PreTranslateGetMessage and the WM_CHAR message.
//		That method may have advantages in certain cases, as it allows
//		the message to be 'eaten' and not passed on to VCADD.
void WINAPI YourAlertName_Char(WPARAM wChar, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	entity erased - ALERT_APP_ENTITY_ERASED
//	note: called when an entity is erased.
void WINAPI YourAlertName_EntityErased(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	entity selected - ALERT_APP_ENTITY_SELECT_CHANGE
//	note: called when an entity selection changes.
void WINAPI YourAlertName_EntitySelectChange(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	beginning to redraw - ALERT_APP_WORLD_BEGIN_REDRAW
//	note: called when a drawing begins to redraw.
void WINAPI YourAlertName_WorldBeginRedraw(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	done redrawing - ALERT_APP_WORLD_END_REDRAW
//	note: called when a drawing completes redrawing.
void WINAPI YourAlertName_WorldEndRedraw(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	beginning to print - ALERT_APP_WORLD_BEGIN_PRINT
//	note: called when a drawing begins to print.
void WINAPI YourAlertName_WorldBeginPrint(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	done printing - ALERT_APP_WORLD_END_PRINT
//	note: called when a drawing completes printing.
void WINAPI YourAlertName_WorldEndPrint(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	dialog opening - ALERT_APP_EX_DIALOG_OPEN_MESSAGE 
//	parameter: LOWORD(lDlgID) is Dialog ID
//	note: called when a dialog has opened.
void WINAPI YourAlertName_DialogOpen(WPARAM, LPARAM lDlgId)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	dialog closing - ALERT_APP_EX_DIALOG_CLOSE_MESSAGE
//	parameter: LOWORD(lDlgID) is Dialog ID
//	note: called when a dialog has closed.
void WINAPI YourAlertName_DialogClose(WPARAM, LPARAM lDlgId)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD application closing - ALERT_APP_CLOSE
//	note: called when the VCADD application is closing.
void WINAPI YourAlertName_AppClose(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD drawing closing - ALERT_APP_WORLD_CLOSE
//	note: called when a VCADD drawing is closing.
void WINAPI YourAlertName_DrawingClose(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD main frame closing - ALERT_APP_FRAME_CLOSE
//	note: called when the main VCADD frame window is closing.
void WINAPI YourAlertName_FrameClose(WPARAM, LPARAM) 
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD main frame resizing - ALERT_APP_FRAME_RESIZE
//	note: called when the main VCADD frame window is resizing.
void WINAPI YourAlertName_FrameResize(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD activating - ALERT_APP_ACTIVATE
//	note: called when the VCADD application is being activated.
void WINAPI YourAlertName_Activate(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD deactivating - ALERT_APP_DEACTIVATE
//	note: called when the VCADD application is being de-activated.
void WINAPI YourAlertName_DeActivate(WPARAM, LPARAM)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD user-alert received - ALERT_APP_EX_USER_ALERT_MESSAGE
//	parameter: lParam is the code sent by user
//	notes: called when VCADD receives a user alert sent by the user's application.
//		This is analogous to WM_USER messages and allows the user to send
//		and process user-defined messages.
//		User posts a user alert to VCADD with the following:
//		::PostMessage((HWND)VCGethWndFrame(), WM_COMMAND, 
//				VCM_USER_ALERT, lParam);
//		Note:  VCM_USER_ALERT is defined as 2801 in VCTypes32.h
void WINAPI YourAlertName_UserAlert(WPARAM, LPARAM lParam)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD GetMessage (from PostMessage) -
//		ALERT_APP_EX_PRE_TRANSLATE_GET_MESSAGE
//	parameter: pMsg is pointer to Windows message structure
//	return value: TRUE to eat message and not allow VCADD to process it
//		  FALSE to allow VCADD to process message
//	notes: called when VCADD gets a message from the Windows message
//		queue.
//		Messages in this queue originate as PostMessages.
//		VCADD can be prevented from receiving and processing the message
//		by returning TRUE from this callback function.
BOOL WINAPI YourAlertName_PreTranslateGetMessage(MSG* pMsg)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD FrameMessage (from SendMessage) -
//		ALERT_APP_EX_PRE_TRANSLATE_FRAME_MESSAGE
//	parameter: pMsg is pointer to Windows message structure
//	return value: TRUE to eat message and not allow VCADD to process it
//		  FALSE to allow VCADD to process message
//	notes: called when VCADD handles a Windows SendMessage.
//		VCADD can be prevented from receiving and processing the message
//		by returning TRUE from this callback function.
BOOL WINAPI YourAlertName_PreTranslateFrameMessage(MSG* pMsg)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD dialog messages -
//		ALERT_APP_EX_PRE_TRANSLATE_DIALOG_MESSAGE
//	parameter: pMsg is pointer to Windows message structure
//	return value: TRUE to eat message and not allow VCADD to process it
//		  FALSE to allow VCADD to process message
//	notes: called when VCADD processes dialog box messages.
//		VCADD can be prevented from receiving and processing the message
//		by returning TRUE from this callback function.
BOOL WINAPI YourAlertName_PreTranslateDialogMessage(MSG* pMsg)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
//	VCADD MDI window messages -
//		ALERT_APP_EX_PRE_TRANSLATE_MDICHILD_MESSAGE
//	parameter: pMsg is pointer to Windows message structure
//	return value: TRUE to eat message and not allow VCADD to process it
//		  FALSE to allow VCADD to process message
//	notes: called when VCADD processes MDI child messages.
//		VCADD can be prevented from receiving and processing the message
//		by returning TRUE from this callback function.
BOOL WINAPI YourAlertName_PreTranslateMdiChildMessage(MSG* pMsg)
// = = = = = = = = = = = = = = = = = = = = = = = = = = =
